//package sjd.ahsj.springbootmybatisplusoracle.config;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.http.HttpMethod;
//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
//import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
//
///**
// * Created by Eastern unbeaten on 2018/4/1.
// */
//@Configuration
//@EnableWebSecurity
///**
// * 允许进入页面方法前检验
// */
//@EnableGlobalMethodSecurity(prePostEnabled = true)
//public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//
//    @Autowired
//    private CustomAuthenticationProvider provider;
//
//    @Override
//    protected void configure(HttpSecurity http) throws Exception {
//        http.csrf().disable()
//                //对请求进行验证
//                .authorizeRequests()
//                // 所有 / 的所有请求 都放行
//                .antMatchers("/").permitAll()
//                // 所有 /login 的POST请求 都放行
//                .antMatchers(HttpMethod.POST, "/login").permitAll()
//                // 权限检查
//                .antMatchers("/hello").hasAuthority("AUTH_WRITE")
//                // 角色检查
//                .antMatchers("/world").hasRole("ADMIN")
//                // 所有请求需要身份认证
//                .anyRequest().authenticated()
//                .and()
//                // 添加一个过滤器 所有访问 /login 的请求交给 JWTLoginFilter 来处理 这个类处理所有的JWT相关内容
//                .addFilterBefore(new JWTLoginFilter("/login", authenticationManager()),
//                        UsernamePasswordAuthenticationFilter.class)
//                // 添加一个过滤器验证其他请求的Token是否合法
//                .addFilterBefore(new JWTAuthenticationFilter(),
//                        UsernamePasswordAuthenticationFilter.class);
//    }
//
//    @Override
//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//        // 使用自定义身份验证组件
//        auth.authenticationProvider(new CustomAuthenticationProvider());
//
//    }
//
//    @Autowired
//    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
//        //将验证过程交给自定义验证工具
//        auth.authenticationProvider(provider);
//    }
//}
